﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Entities;

namespace AccesoDatos
{
    public class UnidadesMedida
    {
        public static List<Unidad_Medida> obtenerTodasUnidadesMedida()
        {
            List<Unidad_Medida> lstUnidades = null;
            SqlConnection conexion = null;
            try
            {
                conexion = DB.Conectar();
                string comando = "SELECT idUnidadMedida, nombre FROM Unidad_Medida order by nombre";
                List<SqlParameter> lstParametros = new List<SqlParameter>();
                SqlDataReader dr = DB.GenerarReader(comando, lstParametros, conexion);
                //List<Unidad_Medida> lstUnidades = new List<Unidad_Medida>();
                lstUnidades = new List<Unidad_Medida>();
                Unidad_Medida objUnidadMedida;
                while (dr.Read())
                {
                    objUnidadMedida = new Unidad_Medida();
                    objUnidadMedida.IdUnidadMedida = (int)dr["idUnidadMedida"];
                    objUnidadMedida.Nombre = dr["nombre"].ToString();
                    lstUnidades.Add(objUnidadMedida);
                    objUnidadMedida = null;
                }
                //conexion.Close();

            }
            catch (SqlException ex)
            {
                //Con throw la información de la pila es mas profunda de donde se genero el error
                //En la capa de Presentación se Captura como Exception
                throw new Exception("Hubo un problema al cargar las unidades de medida.", ex);
            }
            catch (Exception ex)
            {
                throw new Exception("Hubo un problema al cargar las unidades de medida.", ex);
            }
            finally
            {
                conexion.Close();
            }
            return lstUnidades;
        }

        public static Unidad_Medida BuscarPorId(int id)
        {
            SqlConnection conexion = null;
            Unidad_Medida objUnidadMedida = null;
            try
            {
                conexion = DB.Conectar();
                string comando = "SELECT  idUnidadMedida, nombre FROM Unidad_Medida WHERE (idUnidadMedida = @id)";
                List<SqlParameter> lstParametros = new List<SqlParameter>();
                lstParametros.Add(new SqlParameter("@id", id));
                SqlDataReader dr = DB.GenerarReader(comando, lstParametros, conexion);
                //Unidad_Medida objUnidadMedida = null;
                while (dr.Read())
                {
                    objUnidadMedida = new Unidad_Medida();
                    objUnidadMedida.IdUnidadMedida = (int)dr["idUnidadMedida"];
                    objUnidadMedida.Nombre = dr["nombre"].ToString();
                }
                //conexion.Close();
            }
            catch (SqlException ex)
            {
                //Con throw la información de la pila es mas profunda de donde se genero el error
                //En la capa de Presentación se Captura como Exception
                throw new Exception("Hubo un problema al cargar la unidad de medida.", ex);
            }
            catch (Exception ex)
            {
                throw new Exception("Hubo un problema al cargar la unidad de medida.", ex);
            }
            finally
            {
                conexion.Close();
            }
            return objUnidadMedida;
        }
    }
}